#ifndef SONG_H_INCLUDED
#define SONG_H_INCLUDED

#include <vector>
using namespace std;

class note {
  public:
    // functions
    note();
    note(wxString thepitch, wxByte thestring, wxByte thefret, wxByte thetype, int thesharp, int theflat, wxByte theoctave,
         int meterbottom, int tempo);
    note(wxByte thetype, int meterbottom, int tempo);       // constructor for rest
    void calculateFrequency();
    void calculateKeyNumber();
    void calculateTime(int meterbottom, int tempo);
    // variables
    wxString pitchString;
    wxByte pitch, string, fret, type, octave, keyNumber;
    bool rest, sharp, flat, upsideDown;
    float frequency;
    int time;
    int status;     // 0 = unplayed, 1 = incorrect, 2 = correct
};

class song {
  public:
    // functions
    song();
    void loadSong(wxString songPath);
    void reset();
    // variables
    wxString artist, title;
    wxInt32 tempo, metertop, meterbottom;
    float totalLength; // in counts
    float speed;
    vector<note*> notes;
};

#endif // SONG_H_INCLUDED
